#include <QCoreApplication>
#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

//Одномерный массив

    int A10[10]={1,2,3,4,5,6,7,8,9,10};
    for (int i=0;i<10;i++)
    {
        cout<<A10[i]<<" ";
    }
    cout<<endl<<endl;
//Двумерный самассив
    int t=1;
    int A[5][5];

    for (int i=0;i<5;i++)
    {
        for (int j=0;j<5;j++)
        {
            A[i][j]=t++;
            cout<<A[i][j]<<"\t";
        }
        cout<<endl;
    }
    cout<<endl;
//Транспонированный двумерный массив
    int At[5][5];

    for (int i=0;i<5;i++)
    {
        for (int j=0;j<5;j++)
        {
            At[i][j]=A[j][i];
            cout<<At[i][j]<<"\t";
        }
        cout<<endl;
    }
    cout<<endl;
//Массив с нолями
    int Azeros[5][5];
        for (int i=0;i<5;i=i+2)
        {
            for (int j=0;j<5;j++)
            {
                Azeros[i][j]=At[i][j];
                j++;
                Azeros[i][j]=0;
            }
        }
        for (int i=1;i<5;i=i+2)
        {
            for (int j=1;j<5;j++)
            {
                Azeros[i][j]=At[i][j];
                j++;
                Azeros[i][j]=0;
            }
        }

    for (int i=0;i<5;i++)
    {
        for (int j=0;j<5;j++)
        {
            cout<<Azeros[i][j]<<"\t";
        }
        cout<<endl;
    }
    cout<<endl;

    //avs
    for (int i=1;i<4;i++)
    {
        for (int j=1;j<4;j++)
        {
        if (Azeros[i][j]==0)
        {
            Azeros[i][j]=(Azeros[i][j-1]+Azeros[i][j+1]+Azeros[i-1][j]+Azeros[i+1][j])/4;
        }
        }
    }
    for (int i=0;i<5;i++)
    {
        int j=0;
        if (Azeros[i][j]==0)
        {
            Azeros[i][j]=(Azeros[i][j+1]+Azeros[i-1][j]+Azeros[i+1][j])/4;

        }
    }
    for (int i=0;i<5;i++)
    {
        int j=4;
        if (Azeros[i][j]==0)
        {
            Azeros[i][j]=(Azeros[i][j-1]+Azeros[i-1][j]+Azeros[i+1][j])/4;

        }
    }
    for (int j=0;j<5;j++)
    {
        int i=0;
        if (Azeros[i][j]==0)
    {
        Azeros[i][j]=(Azeros[i][j-1]+Azeros[i][j+1]+Azeros[i+1][j])/4;
    }
    }
    for (int j=0;j<5;j++)
    {
        int i=4;
        if (Azeros[i][j]==0)
    {
        Azeros[i][j]=(Azeros[i][j-1]+Azeros[i][j+1]+Azeros[i-1][j])/4;
    }
    }

    //cout avs
    for (int i=0;i<5;i++)
    {
        for (int j=0;j<5;j++)
        {
            cout<<Azeros[i][j]<<"\t";
        }
        cout<<endl;
    }


    cout<<endl<<endl;
    //Змейка
    int mi=5;
    int mj=5;

    int msnake[mi][mj];
    int ts=1;

    int j=0;
    for (int i=0;i<mi;i++)
        {
        if (j<1)
        {
         for(j=0;j<mj;j++)
         {
             msnake[i][j]=ts++;
         }
        }
        else if (j>3)
        {
            for(j=(mj-1);j>=0;j--)
            {
                msnake[i][j]=ts++;
            }
        }
        }

    //cout snake
    for (int i=0;i<mi;i++)
    {
        for (int j=0;j<mj;j++)
        {
            cout<<msnake[i][j]<<"\t";
        }
        cout<<endl;
    }

    return a.exec();
}
